d14a5de8f747f90d6b400533dbd51d070cde2777,engine/src/test/java/org/camunda/bpm/engine/test/api/runtime/MessageCorrelationByLocalVariablesTest.java,MessageCorrelationByLocalVariablesTest,testReceiveTaskMessageCorrelation,#,34

Before Change



    Map<String, Object> variables = new HashMap<String, Object>();
    variables.put("vars", Arrays.asList(1, 2, 3));
    engineRule.getRuntimeService().startProcessInstanceByKey("Process_1", variables);

    //when correlated by local variables
    String messageName = TEST_MESSAGE_NAME;
    Map<String, Object> correlationKeys = new HashMap<String, Object>();
    int correlationKey = 1;
    correlationKeys.put("localVar", correlationKey);
    correlationKeys.put("constVar", "someValue");

    engineRule.getRuntimeService().createMessageCorrelation(messageName)
        .localVariablesEqual(correlationKeys).setVariables(
            Variables.createVariables()
                .putValue("newVar", "newValue"))
        .correlateWithResult();

    //then exactly one message is correlated = one receive task is passed by, two other continue waiting

After Change



    Map<String, Object> variables = new HashMap<String, Object>();
    variables.put("vars", Arrays.asList(1, 2, 3));
    ProcessInstance processInstance = engineRule.getRuntimeService().startProcessInstanceByKey("Process_1", variables);

    //when correlated by local variables
    String messageName = TEST_MESSAGE_NAME;
    Map<String, Object> correlationKeys = new HashMap<String, Object>();
    int correlationKey = 1;
    correlationKeys.put("localVar", correlationKey);
    correlationKeys.put("constVar", "someValue");

    MessageCorrelationResult messageCorrelationResult = engineRule.getRuntimeService().createMessageCorrelation(messageName)
        .localVariablesEqual(correlationKeys).setVariables(Variables.createVariables().putValue("newVar", "newValue")).correlateWithResult();

    //then one message is correlated, two other continue waiting
    checkExecutionMessageCorrelationResult(messageCorrelationResult, processInstance, "MessageReceiver_1");

    //uncorrelated executions
    List<Execution> uncorrelatedExecutions = engineRule.getRuntimeService().createExecutionQuery().activityId("MessageReceiver_1").list();